nfl_analytics_theme <- function(..., base_size = 12) {
  
  theme(
    text = element_text(family = "Roboto",
                        size = base_size,
                        color = "black"),
    axis.ticks = element_blank(),
    axis.title = element_text(face = "bold"),
    axis.text = element_text(face = "bold"),
    plot.title.position = "plot",
    plot.title = element_markdown(size = 16,
                                  vjust = .02,
                                  hjust = 0.5),
    plot.subtitle = element_markdown(hjust = 0.5),
    plot.caption = element_markdown(size = 8),
    panel.grid.minor = element_blank(),
    panel.grid.major =  element_line(color = "#d0d0d0"),
    panel.background = element_rect(fill = "#f7f7f7"),
    plot.background = element_rect(fill = "#f7f7f7"),
    panel.border = element_blank(),
    legend.background = element_rect(color = "#F7F7F7"),
    legend.key = element_rect(color = "#F7F7F7"),
    legend.title = element_text(face = "bold"),
    legend.title.align = 0.5,
    strip.text = element_text(face = "bold"))
}
teams <- nflreadr::load_teams()

This looks like a good article on EPA.

Offensive EPA

play_by_play_2024
── nflverse play by play data ──────────────────────────────────────────────────────────────────────────────────────────
ℹ Data updated: 2024-10-14 05:20:52 EDT

What’s the combined record of teams in each quadrant?

play_by_play_2024 %>% 
  filter(defteam == 'PIT') %>% 
  select(posteam, defteam, home_team, contains('epa'), everything()) %>% 
  arrange(epa)
── nflverse play by play data ──────────────────────────────────────────────────────────────────────────────────────────
ℹ Data updated: 2024-10-14 05:20:52 EDT
LS0tCnRpdGxlOiAiTkZMIEFuYWx5dGljczogYSByZXZpZXcgb2YgRXhwZWN0ZWQgUG9pbnRzIEFkZGVkIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBsaWJyYXJpZXMsIGluY2x1ZGU9VFJVRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkobmZsdmVyc2UpCmxpYnJhcnkoZ3QpCmxpYnJhcnkoZ2d0ZXh0KQpsaWJyYXJ5KGdncmVwZWwpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KGdnaW1hZ2UpCmBgYAoKYGBge3IgbmZsX2FuYWx5dGljc190aGVtZSwgaW5jbHVkZT1UUlVFfQpuZmxfYW5hbHl0aWNzX3RoZW1lIDwtIGZ1bmN0aW9uKC4uLiwgYmFzZV9zaXplID0gMTIpIHsKICAKICB0aGVtZSgKICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlJvYm90byIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBiYXNlX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiksCiAgICBheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLAogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiKSwKICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiKSwKICAgIHBsb3QudGl0bGUucG9zaXRpb24gPSAicGxvdCIsCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF9tYXJrZG93bihzaXplID0gMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IC4wMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhqdXN0ID0gMC41KSwKICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X21hcmtkb3duKGhqdXN0ID0gMC41KSwKICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfbWFya2Rvd24oc2l6ZSA9IDgpLAogICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBhbmVsLmdyaWQubWFqb3IgPSAgZWxlbWVudF9saW5lKGNvbG9yID0gIiNkMGQwZDAiKSwKICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZjdmN2Y3IiksCiAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZjdmN2Y3IiksCiAgICBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X2JsYW5rKCksCiAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChjb2xvciA9ICIjRjdGN0Y3IiksCiAgICBsZWdlbmQua2V5ID0gZWxlbWVudF9yZWN0KGNvbG9yID0gIiNGN0Y3RjciKSwKICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiKSwKICAgIGxlZ2VuZC50aXRsZS5hbGlnbiA9IDAuNSwKICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIikpCn0KYGBgCgpgYGB7ciB0ZWFtcywgaW5jbHVkZT1UUlVFfQp0ZWFtcyA8LSBuZmxyZWFkcjo6bG9hZF90ZWFtcygpCmBgYAoKClRoaXMgbG9va3MgbGlrZSBhIGdvb2QgYXJ0aWNsZSBvbiBbRVBBXShodHRwczovL2Jlc3RiYWxsc3RhdHMuY29tL2V4cGVjdGVkLXBvaW50cy1hZGRlZC1hLWZ1bGwtZXhwbGFuYXRpb24vIzp+OnRleHQ9RXhwZWN0ZWQlMjBQb2ludHMlMjBBZGRlZCUyMChFUEEpJTIwaXMsZXZhbHVhdGUlMjB0ZWFtJTIwYW5kJTIwcGxheWVyJTIwcGVyZm9ybWFuY2UuKS4KCgpgYGB7ciBwbGF5X2J5X3BsYXlfMjAyNCwgaW5jbHVkZT1UUlVFfQpwbGF5X2J5X3BsYXlfMjAyNCA8LSBsb2FkX3BicChzZWFzb25zPW1vc3RfcmVjZW50X3NlYXNvbigpKQpgYGAKCiMgT2ZmZW5zaXZlIEVQQSAKCmBgYHtyfQoodGVhbV9vZmZlbnNpdmVfZXBhIDwtIHBsYXlfYnlfcGxheV8yMDI0ICU+JSAKICBncm91cF9ieShwb3N0ZWFtKSAlPiUgCiAgZmlsdGVyKCFpcy5uYShwb3N0ZWFtKSkgJT4lIAogIHN1bW1hcmlzZShhdmdfb2ZmZW5zaXZlX2VwYSA9IG1lYW4oZXBhLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICAuZ3JvdXBzID0gJ2Ryb3AnKSAlPiUgCiAgcmVuYW1lKHRlYW0gPSBwb3N0ZWFtKSkKYGBgCgpgYGB7cn0KKHRlYW1fZGVmZW5zaXZlX2VwYSA8LSBwbGF5X2J5X3BsYXlfMjAyNCAlPiUgCiAgZ3JvdXBfYnkoZGVmdGVhbSkgJT4lIAogIGZpbHRlcighaXMubmEocG9zdGVhbSkpICU+JSAKICBzdW1tYXJpc2UoYXZnX2RlZmVuc2l2ZV9lcGEgPSBtZWFuKGVwYSwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgLmdyb3VwcyA9ICdkcm9wJykgJT4lIAogIHJlbmFtZSh0ZWFtID0gZGVmdGVhbSkpCmBgYAoKYGBge3J9CihkZl90ZWFtX2VwYSA8LSB0ZWFtX29mZmVuc2l2ZV9lcGEgJT4lIAogIGxlZnRfam9pbih4PS4sCiAgICAgICAgICAgIHk9dGVhbV9kZWZlbnNpdmVfZXBhLAogICAgICAgICAgICBieT0ndGVhbScpICU+JSAKICBsZWZ0X2pvaW4oeD0uLAogICAgICAgICAgICB5PXRlYW1zLAogICAgICAgICAgICBieT1jKCd0ZWFtJyA9ICd0ZWFtX2FiYnInKSkpCmBgYAoKCldoYXQncyB0aGUgY29tYmluZWQgcmVjb3JkIG9mIHRlYW1zIGluIGVhY2ggcXVhZHJhbnQ/CgpgYGB7cn0KZGZfdGVhbV9lcGEgJT4lIAogIGdncGxvdCguLAogICAgICAgICBhZXMoeD1hdmdfb2ZmZW5zaXZlX2VwYSwKICAgICAgICAgICAgIHk9YXZnX2RlZmVuc2l2ZV9lcGEsCiAgICAgICAgICAgICBhbHBoYT1pZl9lbHNlKHRlYW0gPT0gJ1BJVCcsICdQSVQnLCAnT3RoZXInKSkpICsgCiAgIyBnZW9tX3BvaW50KGNvbG9yPWRmX3RlYW1fZXBhJHRlYW1fY29sb3IsIHNpemU9My41KSArIAogIGdlb21faW1hZ2UoYWVzKGltYWdlID0gdGVhbV9sb2dvX3dpa2lwZWRpYSksIHNpemU9LjEpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLAogICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC44LCBsaW5ldHlwZSA9ICJkYXNoZWQiKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMCwKICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuOCwgbGluZXR5cGUgPSAiZGFzaGVkIikgKwogIHNjYWxlX2FscGhhX21hbnVhbCh2YWx1ZXMgPSBjKCdQSVQnID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT3RoZXInID0gLjIpKSArIAogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzY2FsZXM6OnByZXR0eV9icmVha3MoKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gc2NhbGVzOjpjb21tYV9mb3JtYXQoKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzY2FsZXM6OnByZXR0eV9icmVha3MoKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gc2NhbGVzOjpjb21tYV9mb3JtYXQoKSkgKwogIGxhYnMoeD0nQXZlcmFnZSBPZmZlbnNpdmUgRVBBJywKICAgICAgIHk9J0F2ZXJhZ2UgRGVmZW5zaXZlIEVQQScsCiAgICAgICBjYXB0aW9uPSdTb3VyY2U6IG5mbHJlYWRyOjogcGFja2FnZScpICsgCiAgZ2d0aXRsZSgnKipBdmVyYWdlIEV4cGVjdGVkIFBvaW50cyBBZGRlZCoqOiBPZmZlbnNlIHZzLiBEZWZlbnNlJywKICAgICAgICAgIHN1YnRpdGxlID0gJzIwMjQgc2Vhc29uJykgKyAKICBuZmxfYW5hbHl0aWNzX3RoZW1lKCkgKyAKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnbm9uZScpCmBgYAoKYGBge3J9CihkZl90ZWFtX2VwYSA8LSBkZl90ZWFtX2VwYSAlPiUgCm11dGF0ZShlcGFfcXVhZHJhbnQgPSBpZl9lbHNlKGF2Z19kZWZlbnNpdmVfZXBhID4gMCAmIGF2Z19vZmZlbnNpdmVfZXBhIDwgMCwgJ1F1YWQxJywKICAgICAgICAgICAgICAgICAgICAgIGlmX2Vsc2UoYXZnX2RlZmVuc2l2ZV9lcGEgPiAwICYgYXZnX29mZmVuc2l2ZV9lcGEgPiAwLCAnUXVhZDInLAogICAgICAgICAgICAgICAgICAgICAgaWZfZWxzZShhdmdfZGVmZW5zaXZlX2VwYSA8IDAgJiBhdmdfb2ZmZW5zaXZlX2VwYSA8IDAsICdRdWFkMycsICdRdWFkNCcpKSkpKQpgYGAKCmBgYHtyfQpzZWFzb25zIDwtIG5mbHJlYWRyOjpsb2FkX3NjaGVkdWxlcyhzZWFzb25zID0gMjAyNCkKYGBgCgoKYGBge3J9CnBsYXlfYnlfcGxheV8yMDI0ICU+JSAKICBmaWx0ZXIoZGVmdGVhbSA9PSAnUElUJykgJT4lIAogIHNlbGVjdChwb3N0ZWFtLCBkZWZ0ZWFtLCBob21lX3RlYW0sIGNvbnRhaW5zKCdlcGEnKSwgZXZlcnl0aGluZygpKSAlPiUgCiAgYXJyYW5nZShlcGEpCmBgYAoK